package com.atguigu.bigdata.scala.chapter06

object Scala09_Object_Instance_2 {
    def main(args: Array[String]): Unit = {

        // TODO 面向对象编程 - 构建方法 - 构造方法
        // Scala语言是一个函数式编程语言，所以万物皆函数，所以类也是函数
        // 声明一个类，也等同于声明一个函数，所以类声明时，可以增加参数列表的,这个函数其实就是构造函数
        // 创建类的对象，等同于调用这个函数, 函数体（类体）就会执行，等同于类的初始化
        //val user = new User()
        // 构造方法可以传递参数
        val user = new User("zhangsan")

        // java中构造方法可以重载的
        // scala中构造方法分为2大类 : 主构造方法 & 辅助构造方法
        // 主构造方法用于完成类的初始化，必须要调用执行
        // 辅助构造方法用于完成类的辅助操作，可以不需要调用，但是只要调用，就必须直接或间接调用主构造方法
        // 辅助构造方法可以重载，主构造函数不可以，辅助构造方法采用this关键字声明

        // 如果辅助构造方法调用其他辅助构造方法时，需要提前声明

        //val user1 = new User()
        //val user2 = new User(20)


    }
    class User(name:String) {
        // 函数体
        println("user init...")

        // 辅助构造方法
//        def this() {
//            //this("zhangsan")
//            this(30)
//        }
//
//        def this(age:Int) {
//            this("lisi")
//            //this()
//        }
    }
}